using System;
using System.Text;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using Microsoft.Practices.EnterpriseLibrary.Data;
using Microsoft.Practices.EnterpriseLibrary.Data.Sql;
using Entity;

namespace Data
{
    public class UsuarioDA
    {
        #region Metodos Publicos
        public static void InsertarUsuario(Usuario oUsuario)
        {
            SqlDatabase sqlClient = new SqlDatabase(Configuracion.GetConnection);
            DbCommand dbCmd = sqlClient.GetStoredProcCommand("InsertarUsuario");
            sqlClient.AddInParameter(dbCmd, "@UsuarioId", DbType.Int32, oUsuario.UsuarioId);
            sqlClient.AddInParameter(dbCmd, "@Nombres", DbType.String, oUsuario.Nombres);
            sqlClient.AddInParameter(dbCmd, "@Login", DbType.String, oUsuario.Login);
            sqlClient.AddInParameter(dbCmd, "@Email", DbType.String, oUsuario.Email);
            sqlClient.AddInParameter(dbCmd, "@Password", DbType.String, oUsuario.Password);
            sqlClient.AddInParameter(dbCmd, "@PerfilId", DbType.Guid, oUsuario.PerfilId);
            sqlClient.AddInParameter(dbCmd, "@LogUsuarioId", DbType.Int32, oUsuario.LogUsuarioId);
            sqlClient.AddInParameter(dbCmd, "@Estado", DbType.Boolean, oUsuario.Estado);
            sqlClient.ExecuteNonQuery(dbCmd);
        }
        public static void EliminarUsuario(Int32 uidUsuarioId)
        {
            SqlDatabase sqlClient = new SqlDatabase(Configuracion.GetConnection);
            DbCommand dbCmd = sqlClient.GetStoredProcCommand("EliminarUsuario");
            sqlClient.AddInParameter(dbCmd, "@UsuarioId", DbType.Int32, uidUsuarioId);            

            sqlClient.ExecuteNonQuery(dbCmd);
        }
        public static DataTable ObtenerUsuarios(String strNombres)
        {
            SqlDatabase sqlClient = new SqlDatabase(Configuracion.GetConnection);
            DbCommand dbCmd = sqlClient.GetStoredProcCommand("ObtenerUsuarios");
            sqlClient.AddInParameter(dbCmd, "@Nombre", DbType.String, strNombres);
            return sqlClient.ExecuteDataSet(dbCmd).Tables[0];
        }
        public static DataSet ValidarUsuario(String strLogin,String strPassword)
        {
            SqlDatabase sqlClient = new SqlDatabase(Configuracion.GetConnection);
            DbCommand dbCmd = sqlClient.GetStoredProcCommand("ValidarUsuario");
            sqlClient.AddInParameter(dbCmd, "@Login", DbType.String, strLogin);
            sqlClient.AddInParameter(dbCmd, "@Password", DbType.String, strPassword);    
            return sqlClient.ExecuteDataSet(dbCmd);
        }
        public static void ActualizarPassword(String strLogin,String strPasswordNuevo,String strPasswordAntiguo)
        {
            SqlDatabase sqlClient = new SqlDatabase(Configuracion.GetConnection);
            DbCommand dbCmd = sqlClient.GetStoredProcCommand("ActualizarPassword");
            sqlClient.AddInParameter(dbCmd, "@Login", DbType.String, strLogin);
            sqlClient.AddInParameter(dbCmd, "@PasswordNuevo", DbType.String, strPasswordNuevo);
            sqlClient.AddInParameter(dbCmd, "@PasswordAntiguo", DbType.String, strPasswordAntiguo);
            sqlClient.ExecuteNonQuery(dbCmd);
        }
        public static DataTable RecuperarPassword(String strLogin)
        {
            SqlDatabase sqlClient = new SqlDatabase(Configuracion.GetConnection);
            DbCommand dbCmd = sqlClient.GetStoredProcCommand("RecuperarPassword");
            sqlClient.AddInParameter(dbCmd, "@Login", DbType.String, strLogin);
            return sqlClient.ExecuteDataSet(dbCmd).Tables[0];
        }
        public static DataTable ObtenerDetalleUsuario(Int32 uidUsuarioId)
        {
            SqlDatabase sqlClient = new SqlDatabase(Configuracion.GetConnection);
            DbCommand dbCmd = sqlClient.GetStoredProcCommand("ObtenerDetalleUsuario");
            sqlClient.AddInParameter(dbCmd, "@UsuarioId", DbType.Int32, uidUsuarioId);
            return sqlClient.ExecuteDataSet(dbCmd).Tables[0];
        }
        #endregion
    }
}
